package com.market.controller;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.market.model.dto.UserLoginDto;
import com.market.service.UserService;
import com.market.model.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 公共接口控制器
 * 处理用户登录、验证码获取等不需要登录就能访问的功能
 * 所有接口不需要登录验证即可访问
 * @author zhangyihua
 * @version 1.0
 * @date 2024/2/19 21:00
 */
@RestController
@RequestMapping("/public")
public class PublicController {
  @Autowired
  private UserService userService;
  
  /**
   * 用户登录（验证码方式）
   * @param request 包含手机号和验证码的登录请求
   * @return 返回登录令牌信息
   */
  @PostMapping("/user/login")
  public R<SaTokenInfo> login(@RequestBody UserLoginDto request) {
    System.out.println("login");
    SaTokenInfo loginToken = userService.login(request);
    return R.ok(loginToken);
  }
  
  /**
   * 用户登录（密码方式）
   * @param request 包含用户名和密码的登录请求
   * @return 返回登录令牌信息
   */
  @PostMapping("/user/login/pwd")
  public R<SaTokenInfo> loginPwd(@RequestBody UserLoginDto request) {
    SaTokenInfo loginToken = userService.loginPwd(request);
    return R.ok(loginToken);
  }
  
  /**
   * 获取登录验证码
   * 向指定手机号发送登录验证码
   * @param phone 手机号码
   * @return 操作结果
   */
  @GetMapping("/getCheckCode")
  public R<String> getLoginCode(String phone) {
    userService.getLoginCode(phone);
    return R.ok();
  }
}
